﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows.Forms;

// Tầng này chỉ giao tiếp với DataAccessLayer
using qlHieuThuocDongY.DataAccess;
using qlHieuThuocDongY.BusinessObject;

namespace qlHieuThuocDongY.BusinessLogic
{
    class thongTinBenhNhanBUS
    {
        ConnectData connData = new ConnectData();
        // Lấy danh sách sinh viên
        public DataTable LayDanhSachBenhNhan()
        {
            string sql = "SELECT MaBN, TenBN, NgaySinh, GioiTinh, DiaChi, DienThoai FROM ThongTinBenhNhan";
            return connData.GetDataTable(sql);
        }
        // Lấy tên bệnh nhân
        public DataTable LayDanhSachGioiTinh()
        {
            string sql = "SELECT DISTINCT GioiTinh, "
                + "NameGT = CASE GioiTinh WHEN 1 THEN N'NAM' "
                + "WHEN 0 THEN N'NỮ' END FROM ThongTinBenhNhan";
            return connData.GetDataTable(sql);
        }

        // Thêm một bệnh nhân
        public bool ThemBN(BenhNhan bn)
        {
            if (KiemTraTruocKhiLuu(bn))
            {
                string sql = string.Format("INSERT INTO ThongTinBenhNhan(MaBN, TenBN, NgaySinh, GioiTinh, DiaChi, DienThoai) "
                    + "VALUES ('{0}','{1}','{2}',{3},'{4}','{5}')", bn.MaBN, bn.TenBN, bn.NgaySinh.ToString("dd/MM/yyyy"), bn.GioiTinh, bn.DiaChi, bn.DienThoai);
                if (connData.ExcuteQuery(sql))
                {
                    MessageBox.Show("Thêm Bệnh Nhân Thành Công", "Thông Tin", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return true;
                }
            }
            return false;
        }

        public bool CheckExists(string mabn)
        {
            if (connData.CheckExistValue("ThongTinBenhNhan", "MaBN", mabn))
                return true;
            return false;
        
        }
        // Sửa một sinh viên
        public bool SuaBN(BenhNhan bn)
        {
            if (KiemTraTruocKhiLuu(bn))
            {
                string sql = string.Format("UPDATE ThongTinBenhNhan SET TenBN = '{0}', NgaySinh = '{1}', "
                +"GioiTinh = {2}, DiaChi = '{3}', DienThoai = '{4}' WHERE MaBN = '{5}' ",
                    bn.TenBN, bn.NgaySinh.ToString("dd/MM/yyyy"), bn.GioiTinh, bn.DiaChi, bn.DienThoai , bn.MaBN);
                if (connData.ExcuteQuery(sql))
                {
                    MessageBox.Show("Sửa Bệnh Nhân Thành Công", "Thông Tin", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return true;
                }
            }
            return false;
        }
        // Xóa một sinh viên
        public bool XoaBN(string mabn)
        {
            string sql = "DELETE FROM BanThuoc WHERE MaBN in ('" + mabn + "')"
                + "DELETE FROM ThongTinBenhNhan WHERE MaBN in ('" + mabn + "')";
            if (connData.ExcuteQuery(sql))
            {
                MessageBox.Show("Xóa Bệnh Nhân Thành Công!","Thông Tin",MessageBoxButtons.OK,MessageBoxIcon.Information);
                return true;

            }
            return false;
        }
        // Kiểm tra trước khi Save
        public bool KiemTraTruocKhiLuu(BenhNhan bn)
        {
            if (bn.TenBN.Equals(""))
            {
                MessageBox.Show("Tên Bệnh Nhân Không Hợp Lệ");
                return false;
            }
           
            if (bn.NgaySinh.Year <1850)
            {
                MessageBox.Show("Năm Sinh Không Hợp Lệ");
                return false;
            }

            if (bn.DiaChi.Equals(""))
            {
                MessageBox.Show("Địa Chỉ Bệnh Nhân Không Hợp Lệ");
                return false;
            }

            if (bn.DienThoai.Equals(""))
            {
                MessageBox.Show("Điện Thoại Bệnh Nhân Không Hợp Lệ");
                return false;
            }

            if (bn.DienThoai.Length >11)
            {
                MessageBox.Show("Độ Dài Điện Thoại Bệnh Nhân Không Hợp Lệ");
                return false;
            }

            return true;
        }

        // Hàm tìm mã bệnh nhân kế tiếp
        public string NextID()
        {
            return Utilities.NextID(connData.GetLasID("ThongTinBenhNhan", "MaBN"), "BN");
        }
       
    }
}
